home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
The World of Computer Software.iso
/
mach_doc.zip
/
MACH.DOC
next >
Wrap
Text File
|
1992-12-29
|
19KB
|
369 lines
M I C R O K E R N E L
T E C H N O L O G Y
"A modular, portable software kernel
promising powerful open systems advantages
for system developers and end users."
I B M
MICROKERNEL TECHNOLOGY
Dramatic advances in computing architecture, hardware designs,and
technology have spawned an amazing variety of programming methods,
user interfaces, development tools, communications techniques and
application software. Delivering previously unheard of advantages to
end users in performance, service level, and system utility, the
overwhelming diversity of system offerings has also heralded the cry
for "open systems" & "standards".
IBM, long a leader in creating new systems delivering the
broadest range of application capabilities to the widest range of
users, is again committed to developing the new, open, technologies
needed for the next computing decade.
IBM developers have begun to prototype the next generation of
highly portable systems software, and related applications, around a
microkernel. A microkernel provides a new way of structuring systems
software to reduce it's complexity and to increase it's portability.
It presents the potential for building a single, truly open, computing
environment: using a microkernel "core" product executing multiple
diverse operating systems as "applications" on a single hardware
platform. The promise of microkernel-based system software lies in
providing better ways to cope with the increasing complexity of system
designs, the potential for systems software to be more "in tune" with
the startling leaps forward in processor hardware, and ultimately, the
ability of the end user to select the best available application...
independent of the available processor.
Systems built using microkernel technology will deliver a new
standard for modular, portable, operating systems development
platforms. Rather than creating a single, monolithic system,
developers create a set of servers that can be configured in a
variety of ways to provide the target operating system. (1)
One of the most discussed advances in operating systems in recent
years, is the microkernel - a small, message-based piece of systems
software running in the most privileged state of the computer,
supporting the rest of the operating system as a set of server
applications. Interest in microkernels has grown as system developers
have reacted to the complexity of current operating system
implementations and as the research community has demonstrated the
feasibility of the microkernel concept.
The Mach microkernel technology developed at Carnegie Mellon
University serves as the basis for IBM's microkernel work. On the
Mach base IBM is experimenting with new ways of implementing low-end
environments, developing stand-alone file servers, integrating
multiple operating system personalities on a single computer, and
enabling new ways of delivering DOS execution environments.
By virtue of their size and their ability to support standard
programming services and features as application programs, micro-
kernels themselves are simpler than standard operating systems. With
a microkernel, operating system function is broken down into modular
pieces that may be configured in a variety of ways, permitting larger
systems to be built by adding pieces to smaller ones. Microkernels
also make it easier to support multiprocessors by creating a standard
programming environment that can use multiple processors if they are
present but does not require them. The specialized code for
multiprocessors is restricted to the microkernel itself. Moreover,
networks of communicating microkernels can be used to provide
operating system support for the emerging class of massively parallel
machines. Since they are small and have relatively little kernel-
level code to execute, microkernels provide a convenient way to
support the real-time features needed for multimedia, device control
and high speed communications. Finally, well structured microkernels
provide an insulating layer for hardware differences that are not
masked by the use of higher level programming languages. Thus, they
make porting code easier and increase code reuse.
Current Mach research and development activities include on-going
research work at Carnegie Mellon, as well as Mach-related work at the
University of Utah, the University of Arizona and Cornell University.
The Open Software Foundation Research Institute, building on it's
previous work and research done at Carnegie Mellon has created a
version of Mach that supports massively parallel supercomputers.
There is also work underway at the Center for High Performance
Computing of Worchester Polytechnic Institute on real-time
extensions and file system servers for a Mach environment. (2)
+------------------------------+ +------------------------------+
| | | |
| | | |
| Dominant Personality | | Secondary Personality |
| Applications | | Applications |
| | | |
| (MIC) | | (MIC) |
+------------------------------+ +------------------------------+
==================================================================
"True Application"/Server Boundry
==================================================================
+------------------------------+ +-------------+ +-------------+
| | | | | |
| Dominant Personality | | Secondary | | Secondary |
| Server | | Personality | | Personality |
| | | Server | | Server |
| (MIC) | | (MIC) | | (MIC) |
+------------------------------+ +-------------+ +-------------+
==================================================================
Personality/Personality-Independent Boundry
==================================================================
+--------+ +--------+ +----------+ +---------+ +----------+
| | | | | | | | +-+--------+ |
| Master | | File | | Hardware | | Default | | Device | |
| Server | | Server | | Resource | | Pager | | Drivers | |
| | | | | Manager | | | | | |
| (MIC) | | (MIC) | | (MIC) | | (MIC) | | (DDC) |-+
+--------+ +--------+ +----------+ +---------+ +----------+
==================================================================
User/Privileged Boundary
==================================================================
+-----------+----------------------------------------+-----------+
| | Enhanced Mach 3.0 Microkernel | |
| | | |
| | | | | |
| Virtual | IPC | I/O Support | Host and | Tasks & |
| Memory | | & Interrupts | Processor Sets | Threads |
| | | | | |
| (MIC) | (MIC) | (MIC) | (MIC) | (MIC) |
+-----------+-------+---------------+----------------+-----------+
| (MDC) | (MCD) | (MDC) | (MDC) | (MDC) |
+-----------+-------+---------------+----------------+-----------+
(MIC) - Machine-Independent Code
(DDC) - Device-Dependent Code
(MDC) - Machine-Dependent Code (3)
THE MACH ARCHITECTURE
The functions performed by the Mach microkernel itself are limited
to reduce its size and to maximize the amount of code that runs as an
application program. The microkernel includes only those functions
that are required to define a set of abstract processing environments
for application programs and to permit applications to work together
to deliver services and to act as clients and servers. As a result,
the microkernel provides only five different types of services.
* virtual memory management
* tasks and threads
* interprocess communications (IPC)
* I/O support and interrupt management
* host and processor set services
Other operating system functions such as file systems, device
support and traditional programming interfaces are placed into one or
more server application programs. The enclosed diagram illustrates
this function split by showing how IBM is using Mach to support an
experimental low-end version of AIX* for PS/2* and other Intel386* and
Intel486* based hardware.
MACH TECHNOLOGY OVERVIEW
The virtual memory component of the Mach microkernel supports
large, paged, sparse address spaces that are composed of memory
objects. Each memory object is managed by a memory pager, a task
outside the kernel that provides the backing storage for the pages of
the memory object. Address spaces are manages by mappings or
allocating memory objects within them. Mach manages memory protection
and sharing on a memory object basis in an abstract way, independent
of any particular processor address translation hardware. In
particular, Mach makes heavy use of copy-on-write to permit programs
to share memory objects without copying large numbers of pages when a
new address space accesses the memory object. New copies of the page
are created only when a program in one of the address spaces updates
them. When Mach takes a page fault in a memory object and does not
have the page in memory or when it has to remove pages from memory due
to the requirements of other programs executing on the machine, it
notifies the pager for the memory object in which the fault occurs
using the IPC mechanism. It is then up to the pager, an application
server, to determine how to provide or to store the data. This
permits the system to define different semantics for the memory
objects based on the needs of the programs that use them. The default
pager shown in the diagram provides a pager for the memory objects
that do not require anything other than the usual semantics of
virtual memory. (4)
Mach manages the execution environments for the programs by
providing multiple tasks and threads. Each Mach task has it's own
address space, or map. It assigns memory objects that the task has
mapped to ranges of addresses within the address space. The task is
also the unit of resource allocation and protection in Mach with tasks
being assigned capabilities and access rights to the IPC facilities of
the system. In order to support parallel execution by a program
within a single address space, Mach separates the execution
environment from the actual running of streams of instructions. The
streams of computation including the processor resources needed to
support them are called threads. Thus, a program can be loaded into a
Mach task and can be executed in several different places in the code
at the same time on a multiprocessor or parallel machine. This can
result in better application performance.
The Mach IPC system provides the basic mechanism that allows
threads running in different tasks to communicate with each other.
The IPC system supports the reliable delivery of messages on ports.
Ports are protected channels between tasks. Each task that uses a
port is assigned a set of rights to that port. These rights may be
different for different tasks. Only one task can receive on any port
although any thread within the task may execute the receive operation.
One or more tasks may hold rights to send to a port. The kernel
permits tasks to use the IPC system to transfer port rights among
themselves. It also provides a high performance way of passing large
data areas in messages. Rather than copying the data, the message
contains a pointer to it: this is called a pointer to out-of-line
data. When the kernel transfers the message from the sender to the
receiver, it makes the memory being passed disappear form the sender's
address space and appear in the receiver's address space. One
interesting aspect of the Mach is that the microkernel itself is
structured internally as a task with threads, and most of the Mach
system services are implemented as IPCs to the kernel rather than as
direct system calls.
In order to support I/O and device access, the microkernel provides
access to I/O resources such as memory-mapped devices, I/O ports and
direct memory access (DMA) channels, as well as the ability to reflect
interrupts to device drivers executing in user space. Mach has
services that let privileged programs acquire ownership of devices:
these programs are typically device driver servers running as
applications as shown in the diagram. Since the microkernel must
field all interrupts (because interrupts are typically delivered into
the privileged state of the computer and in order to maintain the
integrity of the system), it has logic that determines whether it
should process the interrupt or reflect it to a server. If the
interrupt is to be reflected to an application, it must have
registered with the kernel and contain code that waits for the kernel
to reflect the interrupt. When the interrupt is reflected, a thread
in the application begins running to process the interrupt.
(5)
Mach's host and processor set features provide two related sets of
functions that are needed if application programs are to provide most
operating system services. The host features return information about
the processor complex running the system and provide certain system
management functions such as time, date, and system stop and restart.
The processor set features are used on multiprocessor machines to
group processors in classes. These classes permit a parallel
application to execute multiple threads simultaneously on different
processors in the same machine so that true parallel execution occurs.
The diagram also shows that Mach carefully splits its
implementation into code that is completely portable from machine to
machine and code that is dependent on the particular machine on which
it is executing. It also segregates the code that depends on devices
into the device drivers: however, the device driver code, while
device-dependent, is not necessarily dependent on the processor
architecture. Using multiple threads per task, Mach provides an
application environment that permits the use of multiprocessors
without requiring that any particular machine be a multiprocessor: on
uniprocessors different threads simply run at different times. All of
the support needed for multiprocessors is concentrated into the
relatively small and simple microkernel.
OPERATING SYSTEMS AS APPLICATION SERVERS
Sitting immediately on top of the microkernel are a number of
application servers that provide general purpose system services.
These programs are called personality-independent servers since they
depend only on the microkernel and themselves. Among the personality-
independent servers are the default pager, the hardware resource
manager that assigns device hardware to device drivers, the master
server that loads other personality-independent servers into memory,
the the device drivers and possibly a general purpose file server.
The microkernel and the personality-independent servers can be
packaged as a product separate from any operating system.
Using the services of the microkernel and the
personality-independent servers, the dominant personality provides a
standard operating system such as AIX. Since the dominant personality
is an application server, it is possible to have multiple servers for
different personalities executing programs written to different
operating systems running on the machine at the same time. However,
there are some operating system services such as error message
translation that are not provided in the personality-independent
servers. Since it is best not to duplicate such services, the dominant
personality provides them not only to its client applications but also
to any other personalities running on the machine. For instance, the
low-end AIX implementation on Mach currently runs as a dominant
personality and supports an environment for running DOS programs
as a secondary personality. (6)
BENEFITS FOR DEVELOPERS AND USERS
Mach represents enabling technology for system developers rather
than a revolution for the end user. The modular, scalable, portable
environment of Mach permits the system developer to create new system
functions as applications rather than within the kernel. It lets
hardware developers write device drivers as applications and makes
porting the system to new platforms a relatively small and very well-
understood job. But there are some real benefits to the end user.
The customer now has a choice: applications written to different
operating systems can execute together on the same machine permitting
the use of exactly the right set of programs for a particular business
or organization. Mach reduces the time it takes system developers to
create new software functions or to use new hardware functions,
providing the end user with better technology more rapidly than in the
past. Finally, Mach permits the end user to benefit from the
emergence of parallel processing and the notions of object-oriented
programming by providing a system that allows applications to use
parallelism and that breaks traditional operating systems up into
modular pieces to which object-oriented implementation techniques can
be applied.
Copyright IBM Corporation 1992 All Rights Reserved
AIX & PS/2 are registered trademarks of IBM Corporation
UNIX is a registered trademark of UNIX System Laboratories, Inc.
Intel386 & Intel486 are trademarks of Intel Corporation
Thanks to Fred Sawicki for supplying this document.
Transcribed by F. Robert Falbo Internet: falbof@c3dt3.c3d.rl.af.mil
------------------------------ notes --------------------------------
(7)